package com.education.platform.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.education.platform.dto.article.ArticleCreateDTO;
import com.education.platform.entity.Article;

import java.util.List;

/**
 * 文章服务接口
 *
 * @author education-platform
 * @since 2024-09-27
 */
public interface ArticleService {

    /**
     * 创建文章
     */
    Long createArticle(ArticleCreateDTO articleCreateDTO);

    /**
     * 更新文章
     */
    void updateArticle(Long id, ArticleCreateDTO articleCreateDTO);

    /**
     * 删除文章
     */
    void deleteArticle(Long id);

    /**
     * 根据ID获取文章
     */
    Article getArticleById(Long id);

    /**
     * 分页查询文章列表
     */
    IPage<Article> getArticlePage(Page<Article> page, String status, String keyword, String tags);

    /**
     * 获取我的文章列表
     */
    List<Article> getMyArticles(Long authorId);

    /**
     * 发布文章
     */
    void publishArticle(Long id);

    /**
     * 归档文章
     */
    void archiveArticle(Long id);

    /**
     * 增加浏览次数
     */
    void incrementViewCount(Long id);

    /**
     * 增加点赞次数
     */
    void incrementLikeCount(Long id);

    /**
     * 获取热门文章
     */
    List<Article> getHotArticles(Integer limit);

    /**
     * 根据标签查询文章
     */
    List<Article> getArticlesByTag(String tag);
}

